package de.app.fbc.user

import com.google.appengine.api.datastore.*
class GruppeController {

	def persistenceManager
    
    def index = { redirect(action:list,params:params) }

    // the delete, save and update actions only accept POST requests
    static allowedMethods = [delete:'POST', save:'POST', update:'POST']

    def list = {
        params.max = Math.min( params.max ? params.max.toInteger() : 10,  100)
		def query = persistenceManager.newQuery( Gruppe )
		def  gruppeInstanceList = query.execute()
		def total = 0
		if(  gruppeInstanceList &&  gruppeInstanceList.size() > 0){
			total =  gruppeInstanceList.size()
		}
		[  gruppeInstanceList :  gruppeInstanceList,  gruppeInstanceTotal: total ]
    }

    def show = {
	    def gruppeInstance = persistenceManager.getObjectById( Gruppe.class, Long.parseLong( params.id )  )
        if(!gruppeInstance) {
            flash.message = "Gruppe not found with id ${params.id}"
            redirect(action:list)
        }
        else { return [ gruppeInstance : gruppeInstance ] }
    }

    def delete = {
	    def gruppeInstance = persistenceManager.getObjectById( Gruppe.class, Long.parseLong( params.id )  )
        if(gruppeInstance) {
            try {
                persistenceManager.deletePersistent(gruppeInstance)
                flash.message = "Gruppe ${params.id} deleted"
                redirect(action:list)
            }
            catch(Exception e) {
                flash.message = "Gruppe ${params.id} could not be deleted"
                redirect(action:show,id:params.id)
            }
        }
        else {
            flash.message = "Gruppe not found with id ${params.id}"
            redirect(action:list)
        }
    }

    def edit = {
	    def gruppeInstance = persistenceManager.getObjectById( Gruppe.class, Long.parseLong( params.id.id )  )
		if(!gruppeInstance) {
            flash.message = "Gruppe not found with id ${params.id}"
            redirect(action:list)
        }
        else {
			gruppeInstance = persistenceManager.detachCopy( gruppeInstance )    
        	return [ gruppeInstance : gruppeInstance ]
        }
    }

    def update = {
	 	def gruppeInstance = persistenceManager.getObjectById( Gruppe.class, Long.parseLong( params.id )  )
    
    	if(gruppeInstance) {
            gruppeInstance.properties = params
            if(!gruppeInstance.hasErrors()){
	
				try{
					persistenceManager.makePersistent(gruppeInstance)
				} catch( Exception e ){
				   	render(view:'edit',model:[gruppeInstance:gruppeInstance])
				}finally{
					flash.message = "Gruppe ${params.id} updated"
	                redirect(action:show,id:gruppeInstance.id)
				}        
 			}
            else {
                render(view:'edit',model:[gruppeInstance:gruppeInstance])
            }
        }
        else {
            flash.message = "Gruppe not found with id ${params.id}"
            redirect(action:list)
        }
    }

    def create = {
        def gruppeInstance = new Gruppe()
        gruppeInstance.properties = params
        return ['gruppeInstance':gruppeInstance]
    }

    def save = {
		def gruppeInstance = new Gruppe(params)
		def l = params.logo
		gruppeInstance.logo = l.getBytes()
		//if(!gruppeInstance.hasErrors() ) {
			try{
				persistenceManager.makePersistent(gruppeInstance)
			} finally{
				flash.message = "Gruppe ${gruppeInstance.id} created"
				redirect(action:list)	
			}
		//}
   
		render(view:'create',model:[gruppeInstance:gruppeInstance])
        
    }
}
